package com.itlong.cloud.enumerate;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      UI枚举。
 * <desc/>
 *
 * @createDate 2018-03-21.
 */
public enum OperateUiTypeEnum {

    UI_IOS("苹果UI",1),  //苹果
    UI_ANDROID("安卓UI",2),  //安卓
    UI_PROPERTY("物业UI",3) , //物业

    UNKOWNTYPE("未知UI类型", -1),                //未知UI类型
    ;


    private String description;
    private Integer type;


    OperateUiTypeEnum(String value, Integer type) {
        this.type = type;
        this.description = value;
    }

    /**
     * {@link #description}的getter。
     */
    public String getDescription() {
        return description;
    }

    /**
     * {@link #type}的getter。
     */
    public Integer getType() {
        return type;
    }



    /**
     * <p>
     *     获取枚举的描述。
     * <p/>
     *
     * @param type  类型值。
     * @return {@link String}。
     */
    public static String getDescription(int type){
        OperateUiTypeEnum[] types = OperateUiTypeEnum.values();
        for(OperateUiTypeEnum limitCategory : types ){
            if(limitCategory.getType() == type){
                return limitCategory.getDescription();
            }
        }
        return null;
    }


    /**
     * <p>
     *     获取枚举的类型。
     * <p/>
     *
     * @param type  类型值。
     * @return {@link int}。
     */
    public static int getType(Integer type) {
        OperateUiTypeEnum[] types = OperateUiTypeEnum.values();
        for(OperateUiTypeEnum limitCategory : types ){
            if(limitCategory.getType() == type){
                return limitCategory.getType();
            }
        }
        return 0 ;
    }

    /**
     * <desc>
     *      UI类型判断。
     * <desc/>
     *
     * @param uiType
     * @return
     * @author shengen.T
     * @createDate 2018-03-21
     */
    public static boolean checkByUiType(Integer uiType){
        if (null == uiType){
            return false;
        }
        for (OperateUiTypeEnum value : values()) {
            if (value.getType() == uiType) {
                return true;
            }
        }
        return false;
    }


    /**
     * <p>
     *     获取枚举的list。
     * <p/>
     *
     * @return {@link java.util.List}。
     */
    public static List<Map> toList() {
        List<Map> mapList = new ArrayList<Map>();
        OperateUiTypeEnum[] ds = OperateUiTypeEnum.values();
        for (OperateUiTypeEnum one : ds) {
            Map<String,Object> term= new HashMap<String,Object>();
            term.put("type",one.getType());
            term.put("description",one.getDescription());
            mapList.add(term);
        }
        return mapList;
    }
}
